﻿using EntitiesLayer;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DAL.Repositorios
{
    public class UsuarioRepository : DAL.Repositorios.IRepositoryUsuarioSesion<UsuarioSimple>
    {
        public UsuarioSimple IniciarSesion(String pnombre, String pclave)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.Add(new SqlParameter("@nombre_usu", pnombre));
            cmd.Parameters.Add(new SqlParameter("@clave_usu", pclave));
            DataSet ds = DBAccess.ExecuteSPWithDS(ref cmd, "PaIniciarSesion");

            if (ds.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    byte[] data = null;
                    MemoryStream ms = null;
                    Bitmap suFoto = null;
                    if (!dr.IsNull(8)) {
                       data = (byte[])(dr["foto"]);
                       ms = new MemoryStream(data);
                       suFoto = (Bitmap)Image.FromStream(ms);
                    }

                    UsuarioSimple objUser = (new UsuarioSimple
                    {
                        Identificacion = dr["identificacion"].ToString(),
                        Nombre = dr["nombre"].ToString(),
                        PApellido = dr["papellido"].ToString(),
                        SApellido = dr["sapellido"].ToString(),
                        FechaNacimiento = Convert.ToDateTime(dr["fechanacimiento"]),
                        FechaIngreso = Convert.ToDateTime(dr["fechaingreso"]),
                        Genero = Convert.ToChar(dr["genero"]),
                        Foto = suFoto,
                        Alias = dr["alias"].ToString(),
                        NombreUsuario = dr["nombreusuario"].ToString(),
                        DiscripcionTipoId = Convert.ToString(dr["idtipoid"]),
                        Nacionalidad = Convert.ToString(dr["idnacionalidad"]),
                        Rol = new RolProcessRepo().GetById(Convert.ToInt32(dr["IdRol"]))
                    });


                    return objUser;
                }
                return null;
            }
            else { 
                return null; }
        }

    }
}
